import { IPSDELogicNode } from './ipsdelogic-node';
import { IPSDELogicParam } from './ipsdelogic-param';
import { IPSSubSysServiceAPI } from '../../service/ipssub-sys-service-api';

/**
 *
 * 继承父接口类型值[RAWWEBCALL]
 * @export
 * @interface IPSDERawWebCallLogic
 */
export interface IPSDERawWebCallLogic extends IPSDELogicNode {
  /**
   * 请求内容类型
   * @description 值模式 [服务请求内容类型（外部接口使用）] {application/json：application/json、 application/x-www-form-urlencoded：application/x-www-form-urlencoded、 multipart/form-data：multipart/form-data、 text/xml：text/xml、 USER：用户自定义、 USER2：用户自定义2、 USER3：用户自定义3、 USER4：用户自定义4 }
   * @type {( string | 'application/json' | 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/xml' | 'USER' | 'USER2' | 'USER3' | 'USER4')}
   */
  bodyContentType: string | 'application/json' | 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/xml' | 'USER' | 'USER2' | 'USER3' | 'USER4';

  /**
   * 目标逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  getDstPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 目标逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  get dstPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 目标逻辑参数对象（必须存在）
   *
   * @type {IPSDELogicParam}
   */
  getDstPSDELogicParamMust(): IPSDELogicParam;

  /**
   * 外部服务接口
   *
   * @type {IPSSubSysServiceAPI}
   */
  getPSSubSysServiceAPI(): IPSSubSysServiceAPI | null;

  /**
   * 外部服务接口
   *
   * @type {IPSSubSysServiceAPI}
   */
  get psSubSysServiceAPI(): IPSSubSysServiceAPI | null;

  /**
   * 外部服务接口（必须存在）
   *
   * @type {IPSSubSysServiceAPI}
   */
  getPSSubSysServiceAPIMust(): IPSSubSysServiceAPI;

  /**
   * 请求模式
   * @description 值模式 [REST请求方式] {GET：GET、 HEAD：HEAD、 POST：POST、 PUT：PUT、 PATCH：PATCH、 DELETE：DELETE、 OPTIONS：OPTIONS、 TRACE：TRACE }
   * @type {( string | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'TRACE')}
   */
  requestMethod: string | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'TRACE';

  /**
   * 请求路径
   * @type {string}
   */
  requestPath: string;

  /**
   * 返回值绑定逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  getRetPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 返回值绑定逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  get retPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 返回值绑定逻辑参数对象（必须存在）
   *
   * @type {IPSDELogicParam}
   */
  getRetPSDELogicParamMust(): IPSDELogicParam;

  /**
   * 返回响应数据对象
   * @type {boolean}
   * @default false
   */
  returnRepEntity: boolean;
}
